package pe.gob.servir.apps.censodirectivo.ejb.service;

import java.util.Date;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import org.apache.log4j.Logger;
import org.jboss.ejb3.annotation.Clustered;

import pe.gob.servir.apps.censodirectivo.common.constantes.Constantes;
import pe.gob.servir.apps.censodirectivo.ejb.dao.ConsumirProcedimientoDAOLocal;
import pe.gob.servir.apps.censodirectivo.ejb.dao.NotificacionDAOLocal;
import pe.gob.servir.apps.censodirectivo.excepcion.ServiceExcepcion;
import pe.gob.servir.apps.censodirectivo.model.bean.Notificacion;
import pe.gob.servir.apps.censodirectivo.persistence.entity.TblNotificacion;

/**
 * Session Bean implementation class Notificacion
 */
@Stateless
@Clustered
public class NotificacionService implements NotificacionServiceRemote, NotificacionServiceLocal {
	
	private static final Logger log = Logger.getLogger(ResponsableService.class);
	
	@EJB
	private NotificacionDAOLocal notificacionDAOLocal;
	@EJB
	private ConsumirProcedimientoDAOLocal consumirProcedimientoDAOLocal;
	/**
	 * Default constructor.
	 */
	
	public NotificacionService() {
		// TODO Auto-generated constructor stub
	}
	
	@Override
	public boolean registrarNotificacion(Notificacion notificacion) throws ServiceExcepcion{
		try{
			TblNotificacion tblNotificacion = new TblNotificacion();
			Date fechaCreacion = new Date();
			tblNotificacion.setAsunto(notificacion.getAsunto());
			tblNotificacion.setCodigo(notificacion.getCodigo());
			tblNotificacion.setCuerpo(notificacion.getCuerpo());
			tblNotificacion.setResponsableId(notificacion.getResponsableId());
			tblNotificacion.setDirectivoPublicoId(notificacion.getDirectivoPublicoId());
			tblNotificacion.setPlantillaId(notificacion.getPlantillaId());
			tblNotificacion.setUsuarioCreador(notificacion.getUsuarioCreador());
			tblNotificacion.setEstadoRegistro("S");
			tblNotificacion.setNotificacionId(consumirProcedimientoDAOLocal.obtenerIdSecuencial(Constantes.CODIGO_TBL_NOTIFICACION));
			tblNotificacion.setFechaCreacion(fechaCreacion);
			tblNotificacion.setFechaEnvio(fechaCreacion);
			notificacionDAOLocal.insertar(tblNotificacion);
			return true;
		} catch (Exception e) {
			log.info("ERROR EJB NotificacionService - registrarNotificacion"+e.getMessage());
			throw e;
		}
	}
	
	@Override
	public boolean actualizarNotificacion(Notificacion notificacion) throws ServiceExcepcion{
		try{
			TblNotificacion tblNotificacion = notificacionDAOLocal.buscarPorId(notificacion.getNotificacionId());
			Date fechaModificacion = new Date();
			tblNotificacion.setFechaModificacion(fechaModificacion);
			tblNotificacion.setFechaRecepcion(fechaModificacion);
			notificacionDAOLocal.actualizar(tblNotificacion);
			return true;
		} catch (Exception e) {
			log.info("ERROR EJB NotificacionService - actualizarNotificacion"+e.getMessage());
			throw e;
		}
	}
}
